package com.chatToolsRpc.message;

import com.chatTools.message.Message;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;

/**
 * @author： pang-yun
 * @date： 2021-09-22 16:56
 * 功能目的 ：用于 rpc 请求消息
 */

@Data
@AllArgsConstructor
@ToString(callSuper = true)
public class RpcRequestMessage extends Message {

    /**
     * 调用的接口全限定名，服务端根据它来找到实现
     */
    private String interfaceName;

    /**
     * 调用接口中的方法名
     */
    private String methodName;

    /**
     * 方法返回类型
     */
    private Class<?> returnType;

    /**
     * 方法参数类型数组
     */
    private Class[] parameterType;

    /**
     * 方法参数值数组
     */
    private Object[] parameterValue;


    public RpcRequestMessage(int sequenceId,String interfaceName, String methodName, Class<?> returnType, Class[] parameterType, Object[] parameterValue) {
        super.setSequenceId(sequenceId);
        this.interfaceName = interfaceName;
        this.methodName = methodName;
        this.returnType = returnType;
        this.parameterType = parameterType;
        this.parameterValue = parameterValue;
    }

    @Override
    public int getMessageType() {
        return RPC_MESSAGE_TYPE_REQUEST;
    }
}
